iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 29
0
自我挑戰組

30天學 LAMP 安裝系列 第 29

Day29 CentOS Stream 安裝 WordPress 與 Laravel

  • 分享至 

  • xImage
  •  

編輯 /etc/hosts 檔案

[doraemon@centos8-gui ~]$ sudo vim /etc/hosts
[sudo] password for doraemon:
[doraemon@centos8-gui ~]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.250.95  wordpress.lab.example.com       laravel.lab.example.com

下載 WordPress 套件

[doraemon@centos8-gui ~]$ cd /tmp && wget <https://tw.wordpress.org/wordpress-5.2.3-zh_TW.tar.gz>
--2019-10-01 15:40:10--  <https://tw.wordpress.org/wordpress-5.2.3-zh_TW.tar.gz>
正在查找主機 tw.wordpress.org (tw.wordpress.org)... 198.143.164.252
正在連接 tw.wordpress.org (tw.wordpress.org)|198.143.164.252|:443... 連上了。
已送出 HTTP 要求,正在等候回應... 200 OK
長度: 11810856 (11M) [application/octet-stream]
Saving to: ‘wordpress-5.2.3-zh_TW.tar.gz’

wordpress-5.2.3-zh_TW.tar.gz  100%[==============================================>]  11.26M  1.44MB/s    in 7.8s

2019-10-01 15:40:18 (1.44 MB/s) - ‘wordpress-5.2.3-zh_TW.tar.gz’ saved [11810856/11810856]

解壓縮 WordPress 套件,產生 wordPress 資料夾,將會被擺放到 /srv 目錄底下

$ tar -zxvf wordpress-5.2.3-zh_TW.tar.gz -C /srv
$ ls /srv/
wordpress

調整目錄擁有者

$ sudo chown -R apache:apache /srv/wordpress/
$ ls -l /srv/
總計 4
drwxr-xr-x. 5 apache apache 4096  9月  5 10:47 wordpress

調整 wordpress 資料夾的 SELinux 設定

$ sudo semanage fcontext -a -t httpd_sys_content_t '/srv/wordpress(/.*)?'
$ sudo restorecon -RFvv /srv/wordpress
$ ls -ldZ /srv/wordpress/
drwxr-xr-x. 5 apache apache system_u:object_r:httpd_sys_content_t:s0 4096  9月  5 10:47 /srv/wordpress/

先為原先的預設網站建立 Apache 的 Virtual Host,包含 HTTP 與 HTTPS

$ sudo vim /etc/httpd/conf.d/00-default-vhost.conf
$ cat /etc/httpd/conf.d/00-default-vhost.conf
<VirtualHost _default_:80>
  ServerName centos8-gui.lab.example.com
  DocumentRoot /var/www/html
  CustomLog "logs/default-vhost.log" combined
</VirtualHost>

<VirtualHost *:443>
  ServerName centos8-gui.lab.example.com
  DocumentRoot /var/www/html
  CustomLog "logs/default-vhost.log" combined
  SSLEngine On
  SSLProtocol all -SSLv3
  SSLCertificateFile /etc/pki/tls/certs/localhost+5.pem
  SSLCertificateKeyFile /etc/pki/tls/private/localhost+5-key.pem
</VirtualHost>

<Directory /var/www/html>
  Require all granted
</Directory>

然後把前一天產生的 certificate (/localhost+5.pem) 與 key (~//localhost+5-key.pem) 放到對應目錄。

[doraemon@centos8-gui ~]$ sudo cp ~/localhost+5.pem /etc/pki/tls/certs/localhost+5.pem
[doraemon@centos8-gui ~]$ sudo cp ~/localhost+5-key.pem /etc/pki/tls/private/localhost+5-key.pem

重新啟動 Apache

$ sudo systemctl restart httpd

登入 CentOS 8 GUI Console,開啟 Firefox 瀏覽器,網址列輸入 http://localhost ,依舊可用

https://ithelp.ithome.com.tw/upload/images/20191001/20119707s4OrGZcFbH.png

網址列輸入 https://localhost ,為 HTTPS 連線,且是綠色鎖頭

https://ithelp.ithome.com.tw/upload/images/20191001/20119707Jew6e2ISmS.png

網址列輸入 https://centos8-gui.lab.example.com ,依舊可用

https://ithelp.ithome.com.tw/upload/images/20191001/20119707BRQjPwsL03.png

繼續處理 WordPress 網站的 Apache Virtual Host 設定

$ sudo cp /etc/httpd/conf.d/00-default-vhost.conf /etc/httpd/conf.d/01-wordpress-vhost.conf
$ sudo vim /etc/httpd/conf.d/01-wordpress-vhost.conf
$ cat /etc/httpd/conf.d/01-wordpress-vhost.conf
<VirtualHost _default_:80>
    ServerName wordpress.lab.example.com
    DocumentRoot /srv/wordpress
    CustomLog "logs/wordpress-vhost.log" combined
</VirtualHost>

<VirtualHost *:443>
    ServerName wordpress.lab.example.com
    DocumentRoot /srv/wordpress
    CustomLog "logs/wordpress-vhost.log" combined
    SSLEngine On
    SSLProtocol all -SSLv3
    SSLCertificateFile /etc/pki/tls/certs/localhost+5.pem
    SSLCertificateKeyFile /etc/pki/tls/private/localhost+5-key.pem
</VirtualHost>

<Directory /srv/wordpress>
    Require all granted
</Directory>

重新啟動 Apache

$ sudo systemctl restart httpd

登入 CentOS 8 GUI Console,開啟 Firefox 瀏覽器,網址列輸入 https://wordpress.lab.example.com ,會自動跳轉到 WordPress 設定頁面。WordPress 的安裝就暫時先 Hold 住了。

https://ithelp.ithome.com.tw/upload/images/20191001/20119707fGnEFMbe2L.png

接下來繼續安裝 Laravel,計畫安裝在 /srv/laravel 目錄下,先處理 Laravel 網站的 Apache Virtual Host 設定。

[doraemon@centos8-gui ~]$ sudo cp /etc/httpd/conf.d/01-wordpress-vhost.conf /etc/httpd/conf.d/02-laravel-vhost.conf
[sudo] password for doraemon:
[doraemon@centos8-gui ~]$ sudo vim /etc/httpd/conf.d/02-laravel-vhost.conf
[doraemon@centos8-gui ~]$ cat /etc/httpd/conf.d/02-laravel-vhost.conf
<VirtualHost _default_:80>
    ServerName laravel.lab.example.com
    DocumentRoot /srv/laravel
    CustomLog "logs/laravel-vhost.log" combined
</VirtualHost>

<VirtualHost *:443>
    ServerName laravel.lab.example.com
    DocumentRoot /srv/laravel
    CustomLog "logs/laravel-vhost.log" combined
    SSLEngine On
    SSLProtocol all -SSLv3
    SSLCertificateFile /etc/pki/tls/certs/localhost+5.pem
    SSLCertificateKeyFile /etc/pki/tls/private/localhost+5-key.pem
</VirtualHost>

<Directory /srv/laravel>
    Require all granted
</Directory>

安裝 Composer(參考 https://getcomposer.org/download/

[doraemon@centos8-gui ~]$ sudo php -r "copy('<https://getcomposer.org/installer>', 'composer-setup.php');"
[doraemon@centos8-gui ~]$ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
All settings correct for using Composer
Downloading...

Composer (version 1.9.0) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

透過 Composer 安裝 Laravel

[doraemon@centos8-gui ~]$ sudo php /usr/local/bin/composer create-project laravel/laravel /srv/laravel
[sudo] password for doraemon:
Do not run Composer as root/super user! See <https://getcomposer.org/root> for details
Installing laravel/laravel (v6.0.2)
  - Installing laravel/laravel (v6.0.2): Downloading (100%)
Created project in /srv/laravel
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 84 installs, 0 updates, 0 removals
  - Installing symfony/polyfill-ctype (v1.12.0): Downloading (100%)
  - Installing phpoption/phpoption (1.5.0): Downloading (100%)
  - Installing vlucas/phpdotenv (v3.6.0): Downloading (100%)
  - Installing symfony/css-selector (v4.3.4): Downloading (100%)
  - Installing tijsverkoyen/css-to-inline-styles (2.2.1): Downloading (100%)
  - Installing symfony/polyfill-php72 (v1.12.0): Downloading (100%)
  - Installing symfony/polyfill-mbstring (v1.12.0): Downloading (100%)
  - Installing symfony/var-dumper (v4.3.4): Downloading (100%)
  - Installing symfony/routing (v4.3.4): Downloading (100%)
  - Installing symfony/process (v4.3.4): Downloading (100%)
  - Installing symfony/polyfill-php73 (v1.12.0): Downloading (100%)
  - Installing symfony/polyfill-intl-idn (v1.12.0): Downloading (100%)
  - Installing symfony/mime (v4.3.4): Downloading (100%)
  - Installing symfony/http-foundation (v4.3.4): Downloading (100%)
  - Installing symfony/event-dispatcher-contracts (v1.1.5): Downloading (100%)
  - Installing psr/container (1.0.0): Downloading (100%)
  - Installing symfony/event-dispatcher (v4.3.4): Downloading (100%)
  - Installing psr/log (1.1.0): Downloading (100%)
  - Installing symfony/debug (v4.3.4): Downloading (100%)
  - Installing symfony/http-kernel (v4.3.4): Downloading (100%)
  - Installing symfony/finder (v4.3.4): Downloading (100%)
  - Installing symfony/service-contracts (v1.1.6): Downloading (100%)
  - Installing symfony/console (v4.3.4): Downloading (100%)
  - Installing symfony/polyfill-iconv (v1.12.0): Downloading (100%)
  - Installing doctrine/lexer (1.1.0): Downloading (100%)
  - Installing egulias/email-validator (2.1.11): Downloading (100%)
  - Installing swiftmailer/swiftmailer (v6.2.1): Downloading (100%)
  - Installing paragonie/random_compat (v9.99.99): Downloading (100%)
  - Installing ramsey/uuid (3.8.0): Downloading (100%)
  - Installing psr/simple-cache (1.0.1): Downloading (100%)
  - Installing opis/closure (3.4.0): Downloading (100%)
  - Installing symfony/translation-contracts (v1.1.6): Downloading (100%)
  - Installing symfony/translation (v4.3.4): Downloading (100%)
  - Installing nesbot/carbon (2.24.0): Downloading (100%)
  - Installing monolog/monolog (2.0.0): Downloading (100%)
  - Installing league/flysystem (1.0.55): Downloading (100%)
  - Installing erusev/parsedown (1.7.3): Downloading (100%)
  - Installing dragonmantank/cron-expression (v2.3.0): Downloading (100%)
  - Installing doctrine/inflector (v1.3.0): Downloading (100%)
  - Installing laravel/framework (v6.0.4): Downloading (100%)
  - Installing fideloper/proxy (4.2.1): Downloading (100%)
  - Installing jakub-onderka/php-console-color (v0.2): Downloading (100%)
  - Installing jakub-onderka/php-console-highlighter (v0.4): Downloading (100%)
  - Installing dnoegel/php-xdg-base-dir (0.1): Downloading (100%)
  - Installing nikic/php-parser (v4.2.4): Downloading (100%)
  - Installing psy/psysh (v0.9.9): Downloading (100%)
  - Installing laravel/tinker (v1.0.10): Downloading (100%)
  - Installing scrivo/highlight.php (v9.15.10.0): Downloading (100%)
  - Installing filp/whoops (2.5.0): Downloading (100%)
  - Installing facade/ignition-contracts (1.0.0): Downloading (100%)
  - Installing facade/flare-client-php (1.1.0): Downloading (100%)
  - Installing facade/ignition (1.9.0): Downloading (100%)
  - Installing fzaninotto/faker (v1.8.0): Downloading (100%)
  - Installing hamcrest/hamcrest-php (v2.0.0): Downloading (100%)
  - Installing mockery/mockery (1.2.3): Downloading (100%)
  - Installing nunomaduro/collision (v3.0.1): Downloading (100%)
  - Installing sebastian/version (2.0.1): Downloading (100%)
  - Installing sebastian/type (1.1.3): Downloading (100%)
  - Installing sebastian/resource-operations (2.0.1): Downloading (100%)
  - Installing sebastian/object-reflector (1.1.1): Downloading (100%)
  - Installing sebastian/recursion-context (3.0.0): Downloading (100%)
  - Installing sebastian/object-enumerator (3.0.3): Downloading (100%)
  - Installing sebastian/global-state (3.0.0): Downloading (100%)
  - Installing sebastian/exporter (3.1.2): Downloading (100%)
  - Installing sebastian/environment (4.2.2): Downloading (100%)
  - Installing sebastian/diff (3.0.2): Downloading (100%)
  - Installing sebastian/comparator (3.0.2): Downloading (100%)
  - Installing phpunit/php-timer (2.1.2): Downloading (100%)
  - Installing phpunit/php-text-template (1.2.1): Downloading (100%)
  - Installing phpunit/php-file-iterator (2.0.2): Downloading (100%)
  - Installing phpunit/php-token-stream (3.1.1): Downloading (100%)
  - Installing theseer/tokenizer (1.1.3): Downloading (100%)
  - Installing sebastian/code-unit-reverse-lookup (1.0.1): Downloading (100%)
  - Installing phpunit/php-code-coverage (7.0.8): Downloading (100%)
  - Installing webmozart/assert (1.5.0): Downloading (100%)
  - Installing phpdocumentor/reflection-common (2.0.0): Downloading (100%)
  - Installing phpdocumentor/type-resolver (1.0.1): Downloading (100%)
  - Installing phpdocumentor/reflection-docblock (4.3.2): Downloading (100%)
  - Installing doctrine/instantiator (1.2.0): Downloading (100%)
  - Installing phpspec/prophecy (1.8.1): Downloading (100%)
  - Installing phar-io/version (2.0.1): Downloading (100%)
  - Installing phar-io/manifest (1.0.3): Downloading (100%)
  - Installing myclabs/deep-copy (1.9.3): Downloading (100%)
  - Installing phpunit/phpunit (8.3.5): Downloading (100%)
symfony/routing suggests installing symfony/config (For using the all-in-one router or any loader)
symfony/routing suggests installing symfony/yaml (For using the YAML loader)
symfony/routing suggests installing symfony/expression-language (For using expression matching)
symfony/routing suggests installing doctrine/annotations (For using the annotation loader)
symfony/event-dispatcher-contracts suggests installing psr/event-dispatcher
symfony/event-dispatcher suggests installing symfony/dependency-injection
symfony/http-kernel suggests installing symfony/browser-kit
symfony/http-kernel suggests installing symfony/config
symfony/http-kernel suggests installing symfony/dependency-injection
symfony/service-contracts suggests installing symfony/service-implementation
symfony/console suggests installing symfony/lock
swiftmailer/swiftmailer suggests installing true/punycode (Needed to support internationalized email addresses, if ext-intl is not installed)
paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)
ramsey/uuid suggests installing ircmaxell/random-lib (Provides RandomLib for use with the RandomLibAdapter)
ramsey/uuid suggests installing ext-libsodium (Provides the PECL libsodium extension for use with the SodiumRandomGenerator)
ramsey/uuid suggests installing ext-uuid (Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator)
ramsey/uuid suggests installing moontoast/math (Provides support for converting UUID to 128-bit integer (in string form).)
ramsey/uuid suggests installing ramsey/uuid-doctrine (Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type.)
ramsey/uuid suggests installing ramsey/uuid-console (A console application for generating UUIDs with ramsey/uuid)
symfony/translation suggests installing symfony/config
symfony/translation suggests installing symfony/yaml
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing elasticsearch/elasticsearch (Allow sending log messages to an Elasticsearch server via official client)
monolog/monolog suggests installing php-amqplib/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongodb (Allow sending log messages to a MongoDB server (via driver))
monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server (via library))
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
league/flysystem suggests installing league/flysystem-eventable-filesystem (Allows you to use EventableFilesystem)
league/flysystem suggests installing league/flysystem-rackspace (Allows you to use Rackspace Cloud Files)
league/flysystem suggests installing league/flysystem-azure (Allows you to use Windows Azure Blob storage)
league/flysystem suggests installing league/flysystem-webdav (Allows you to use WebDAV storage)
league/flysystem suggests installing league/flysystem-aws-s3-v2 (Allows you to use S3 storage with AWS SDK v2)
league/flysystem suggests installing league/flysystem-aws-s3-v3 (Allows you to use S3 storage with AWS SDK v3)
league/flysystem suggests installing spatie/flysystem-dropbox (Allows you to use Dropbox storage)
league/flysystem suggests installing srmklive/flysystem-dropbox-v2 (Allows you to use Dropbox storage for PHP 5 applications)
league/flysystem suggests installing league/flysystem-cached-adapter (Flysystem adapter decorator for metadata caching)
league/flysystem suggests installing league/flysystem-sftp (Allows you to use SFTP server storage via phpseclib)
league/flysystem suggests installing league/flysystem-ziparchive (Allows you to use ZipArchive adapter)
laravel/framework suggests installing ext-memcached (Required to use the memcache cache driver.)
laravel/framework suggests installing ext-redis (Required to use the Redis cache and queue drivers.)
laravel/framework suggests installing aws/aws-sdk-php (Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).)
laravel/framework suggests installing doctrine/dbal (Required to rename columns and drop SQLite columns (^2.6).)
laravel/framework suggests installing guzzlehttp/guzzle (Required to use the Mailgun mail driver and the ping methods on schedules (^6.0).)
laravel/framework suggests installing league/flysystem-aws-s3-v3 (Required to use the Flysystem S3 driver (^1.0).)
laravel/framework suggests installing league/flysystem-cached-adapter (Required to use the Flysystem cache (^1.0).)
laravel/framework suggests installing league/flysystem-sftp (Required to use the Flysystem SFTP driver (^1.0).)
laravel/framework suggests installing moontoast/math (Required to use ordered UUIDs (^1.1).)
laravel/framework suggests installing pda/pheanstalk (Required to use the beanstalk queue driver (^4.0).)
laravel/framework suggests installing pusher/pusher-php-server (Required to use the Pusher broadcast driver (^3.0).)
laravel/framework suggests installing symfony/cache (Required to PSR-6 cache bridge (^4.3.4).)
laravel/framework suggests installing symfony/psr-http-message-bridge (Required to use PSR-7 bridging features (^1.2).)
laravel/framework suggests installing wildbit/swiftmailer-postmark (Required to use Postmark mail driver (^3.0).)
psy/psysh suggests installing ext-pdo-sqlite (The doc command requires SQLite to work.)
psy/psysh suggests installing hoa/console (A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit.)
filp/whoops suggests installing whoops/soap (Formats errors as SOAP responses)
facade/ignition suggests installing laravel/telescope (^2.0)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/php-code-coverage suggests installing ext-xdebug (^2.7.2)
phpunit/phpunit suggests installing phpunit/php-invoker (^2.0.0)
phpunit/phpunit suggests installing ext-soap (*)
phpunit/phpunit suggests installing ext-xdebug (*)
Writing lock file
Generating optimized autoload files
> Illuminate\\Foundation\\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
> @php artisan key:generate --ansi
Application key set successfully.

調整目錄擁有者與 SELinux 設定

$ sudo chown -R apache:apache /srv/laravel/
$ sudo semanage fcontext -a -t httpd_sys_content_t '/srv/laravel(/.*)?'
$ ls -ldZ /srv/laravel/
drwxr-xr-x. 12 apache apache system_u:object_r:httpd_sys_content_t:s0 4096 10月  1 21:58 /srv/laravel/
$ sudo chmod -R 755 /srv/laravel/storage/

啟動 Laravel

[doraemon@centos8-gui ~]$ sudo php /srv/laravel/artisan serve
Laravel development server started: <http://127.0.0.1:8000>

https://ithelp.ithome.com.tw/upload/images/20191001/2011970753kU61CwZu.png

總結:在本篇中,我們於 Apache 內以 Virtual Host 的方式,設定了預設既有的網站,與 WordPress 和 Laravel 的網站,置於 /srv 目錄底下,同時也為各網站設定了 HTTP 與 HTTPS 方式的存取。


上一篇
Day28 CentOS Stream 安裝基本 LAMP 環境 (2)
下一篇
Day30 CentOS Stream 安裝 LAMP 總結
系列文
30天學 LAMP 安裝33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言